package bootstrap

import (
	"fmt"
	"gin_api/core/cache"
	"gin_api/core/configure"
	"gin_api/core/gorm"
	"gin_api/routes"
	"github.com/gin-gonic/gin"
)

func init() {
	// 初始化配置信息
	configure.Init()
	// 设置模式
	setMode(configure.GetString("app.env"))
	// 数据库初始化
	gorm.Init()
	// 缓存初始化
	cache.Init()
}

// RunServer 启动服务
func RunServer() {
	defer func() {
		fmt.Println(recover())
	}()

	// 加载路由
	r := routes.Load()

	// 开启服务，默认监听8080端口
	port := configure.GetString("app.port")
	err := r.Run(port)
	if err != nil {
		panic(fmt.Sprintf("项目启动失败，错误：%v", err))
	}
}

// setModel 设置模式
func setMode(env string) {
	mode := gin.DebugMode
	switch env {
	case "test":
		mode = gin.TestMode
	case "prod":
		mode = gin.ReleaseMode
	}
	gin.SetMode(mode)
}
